/**
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

package pittypat;

import java.io.IOException;
import java.io.Writer;
import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 定义匿名用户的验证信息。
 */
public final class User implements IUser {
	/**
	 * 表示一个匿名用户。
	 */
	public static final IUser ANONYMOUS = new User();

	// 初始化 User 类的新实例。
	private User() {
	}

	/**
	 * 获取用户的 Id，总是为 null。
	 * 
	 * @see pittypat.IUser#getId()
	 */
	@Override
	public UUID getId() {
		return null;
	}

	/**
	 * 获取用户的登录名称，总是为空字符串。
	 * 
	 * @see pittypat.IUser#getLoginName()
	 */
	@Override
	public String getLoginName() {
		return "";
	}

	/**
	 * 获取用户的友好显示名称，总是为空字符串。
	 * 
	 * @see pittypat.IUser#getFriendlyName()
	 */
	@Override
	public String getFriendlyName() {
		return "";
	}

	/**
	 * 获取用户头像的路径，总是为空字符串。
	 * 
	 * @see pittypat.IUser#getFaceUrl()
	 */
	@Override
	public String getFaceUrl() {
		return "";
	}

	/**
	 * 获取用户登录成功后应该进入的第一个页面，总是为空字符串。
	 */
	@Override
	public String getLoginHomeUrl() {
		return "";
	}

	/**
	 * 获取用于设置用户资料的路径，总是为空字符串。
	 */
	@Override
	public String getSettingUrl() {
		return "";
	}
	
	/**
	 * 获取系统的当前日期时间，总是为当前日期时间。
	 * @return 当前日期时间。
	 */
	@Override
	public LocalDateTime getNow() {
		return LocalDateTime.now();
	}

	/**
	 * 将当前对象作为 JSON 字符串写入指定的文本流。
	 * 
	 * @param writer
	 *            目标文本流。
	 * @throws IOException
	 * @see pittypat.IJson#write(java.io.Writer)
	 */
	@Override
	public void write(Writer writer) throws IOException {
		writer.write(
				"{\"id\":null,\"loginName\":\"\",\"friendlyName\":\"\",\"faceUrl\":\"\",\"loginHomeUrl\":\"\",\"settingUrl\":\"\",\"now\":");
		Json.write(writer, this.getNow());
		writer.write('}');
	}
}
